package top.tervest.commons.sms.config;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import top.tervest.commons.sms.Dysms;

/**
 * 阿里大于短信服务（工具类）自动配置类
 * @author ZhangNanNan
 * @datetime 2019-12-25 18:00
 */
/**
 * 配置注解  ,标记该类是个配文类
 */
@Configuration
/**
 * 开启指定类的配置，既是接受配置文件中的参数的类，
 * 多个时我们可以这么写value={Properties1.class,Properteis2.class....}
 */
@EnableConfigurationProperties({DysmsProperties.class})
/**
 * 当这个类（Dysms）在classPath下，并且容器 中没有相同的，就自动配置
 */
@ConditionalOnClass(Dysms.class)
/**
 * 表示只有我们的配置文件是否配置了以aliyun为前缀的资源项值，
 * 并且在该资源项值为true，如果没有配置我们默认设置为true
 * */
@ConditionalOnProperty(
        prefix = "tervest",
        name = "sms.dysms.enabled",
        havingValue = "true",
        matchIfMissing = true
)
public class DysmsAutoConfig {
    @Autowired
    DysmsProperties dysmsProperties;

    /**
     * 当容器中没有指定Bean的情况下，自动配置carService类
     * */
    @ConditionalOnMissingBean(Dysms.class)
    @Bean
    public Dysms dysms() {
        return new Dysms(dysmsProperties);
    }
}
